// API基本URL
const API_BASE_URL = 'http://localhost:8088';

// 主应用
const app = new Vue({
    el: '#app',
    data() {
        return {
            activeMenu: '',
            // 使用全局变量引用
            serverStatus: window.appGlobal.serverStatus,
            // 使用全局变量
            activeCollection: null
        };
    },
    created() {
        // 设置API基础URL
        API.setApiBaseUrl('http://localhost:8088');
        window.appGlobal.API_BASE_URL = 'http://localhost:8088';

        // 检查服务器状态
        this.checkServerStatus();
        
        // 尝试从本地存储加载上次选择的集合
        this.loadStoredCollection();
    },
    methods: {
        // 处理菜单选择
        handleMenuSelect(key) {
            this.activeMenu = key;

            // 如果选择了文档管理或搜索，但没有活动集合，显示提示
            if ((key === 'documents' || key === 'search') && !window.appGlobal.activeCollection) {
                this.$message({
                    message: '请先选择一个集合',
                    type: 'warning'
                });
                this.activeMenu = 'collections';
            }
        },

        // 设置活动集合
        setActiveCollection(collection) {
            // 同时更新本地和全局变量
            this.activeCollection = collection;
            window.appGlobal.activeCollection = collection;
            
            // 保存集合到localStorage
            if (collection) {
                localStorage.setItem('activeCollection', JSON.stringify(collection));
                this.$message({
                    message: `已切换到集合: ${collection.name}`,
                    type: 'success'
                });
            } else {
                localStorage.removeItem('activeCollection');
            }
        },

        // 从localStorage加载保存的集合
        loadStoredCollection() {
            try {
                const storedCollection = localStorage.getItem('activeCollection');
                if (storedCollection) {
                    const collection = JSON.parse(storedCollection);
                    
                    // 验证集合在服务器上是否存在，存在则应用它
                    this.validateAndUseCollection(collection);
                } else {
                    // 如果本地没有保存的集合，尝试从服务器获取当前活动集合
                    this.fetchActiveCollection();
                }
            } catch (error) {
                console.error('从本地存储加载集合失败:', error);
                // 发生错误时，尝试从服务器获取活动集合
                this.fetchActiveCollection();
            }
        },

        // 验证并使用存储的集合
        validateAndUseCollection(collection) {
            // 先检查服务器上是否有这个集合，如果有则使用它
            axios.get(`${API_BASE_URL}/collections/${collection.name}`)
                .then(response => {
                    if (response.data && response.data.name) {
                        // 集合存在，发送请求使用它
                        return axios.post(`${API_BASE_URL}/collections/${collection.name}/use`);
                    } else {
                        throw new Error('集合不存在');
                    }
                })
                .then(() => {
                    // 设置为活动集合
                    this.setActiveCollection(collection);
                })
                .catch(error => {
                    console.error('验证集合失败:', error);
                    // 验证失败，清除本地存储并从服务器获取活动集合
                    localStorage.removeItem('activeCollection');
                    this.fetchActiveCollection();
                });
        },

        // 检查服务器状态
        checkServerStatus() {
            API.checkHealth()
                .then(response => {
                    const status = {
                        online: true,
                        model: response.data.model,
                        memoryMode: response.data.memory_mode,
                        collectionsEnabled: response.data.collections_enabled
                    };
                    
                    // 更新本地和全局变量
                    this.serverStatus = status;
                    Object.assign(window.appGlobal.serverStatus, status);
                })
                .catch(error => {
                    console.error('服务器状态检查失败:', error);
                    this.serverStatus.online = false;
                    window.appGlobal.serverStatus.online = false;
                    this.$message.error('无法连接到服务器，请检查服务器是否正在运行');
                });
        },

        // 获取活动集合
        fetchActiveCollection() {
            API.getActiveCollection()
                .then(response => {
                    if (response.data && response.data.name) {
                        this.setActiveCollection(response.data);
                    }
                })
                .catch(error => {
                    console.error('获取活动集合失败:', error);
                });
        }
    }
});